#include <bits/stdc++.h>
using namespace std;
const int inf=100002;
struct node{
    int d,v,a;
    bool bb;
}b[inf];
struct nodee{
    int l,ll;
    vector<int>uv;
    bool operator > (const nodee &a) const{
        return this->ll>a.ll;
    }
}g[inf];
int n,m,l,v,T,c[inf],oo;
int lower(int l,int r,int k){
    if(l==r)return l;
    int mid=(l+r)>>1;
    if(k<=c[mid])return lower(l,mid,k);
    if(k>c[mid])return lower(mid+1,r,k);
}
set<int>ss;
bool cmp(nodee a,nodee b){
    return a>b;
}
int main()
{
    //freopen("detect.in","r",stdin);
    //freopen("detect.out","w",stdout);
    srand(time(NULL));
    scanf("%d",&T);
    while(T--){

        scanf("%d%d%d%d",&n,&m,&l,&v);
        printf("%d %d\n",rand()%n,rand()%m);
        /*ss.erase(ss.begin(),ss.end());
        for(int i=1;i<=n;i++){
            scanf("%d%d%d",&b[i].d,&b[i].v,&b[i].a);
        }
        for(int i=1;i<=n;i++)b[i].bb=0;
        for(int i=0;i<=m;i++){
            g[i].l=g[i].ll=0;
            g[i].uv.clear();
        }
        oo=0;
        for(int i=1;i<=m;i++)
            scanf("%d",&c[i]);
        sort(c+1,c+m+1);
        for(int i=1;i<=n;i++){
            int lo=lower(1,m,b[i].d);
            if(b[i].a==0){
                if(b[i].v>=v){
                    oo++;
                    for(int j=lo;j<=m;j++){
                        g[j].uv.push_back(i);
                        g[j].l++;
                        g[j].ll++;
                    }

                }
                continue;
            }
            if(b[i].a>0){
                for(int j=lo;j<=m;j++){
                    int su=((b[i].a*(c[j]-b[i].d))<<1)+b[i].v*b[i].v;
                    if(sqrt(su)>v){
                        oo++;
                        for(int k=j;k<=m;k++){
                            g[k].uv.push_back(i);
                            g[k].l++;
                            g[k].ll++;
                        }
                        break;
                    }
                }
            }
            if(b[i].a<0){
                for(int j=lo;j<=m;j++){
                    int su=((b[i].a*(c[j]-b[i].d))<<1)+b[i].v*b[i].v;
                    if(su>=0&&sqrt(su)>v){
                            if(b[i].bb==0){
                                b[i].bb=1;
                                oo++;
                            }
                        g[j].uv.push_back(i);
                        g[j].l++;
                        g[j].ll++;
                    }else break;
                }
            }
        }
        printf("%d ",oo);
        sort(g+1,g+n+1,cmp);
        int ans=0;
        for(int i=1;i<=m;i++){
            if(ss.size()==oo)break;
            int lll=g[i].l;
            for(int j=0;j<lll;j++){
                ss.insert(g[i].uv[j]);
                ans++;
            }
            for(int j=i+1;j<=m;j++){
                g[j].ll=g[j].l;
                for(int k=0;k<g[j].l;k++)
                if(ss.count(g[j].uv[k])==1)g[j].ll--;
            }
            sort(g+1,g+n+1,cmp);
        }
        printf("%d\n",ans);*/
    }

    return 0;
}
